package agh.rozproszony;

import Controller.MessagesController;
import agh.rozproszony.messages.MessagesServer;
import agh.rozproszony.model.Message;
import agh.rozproszony.model.User;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;


public class MainRMIMessagesTest {

    /**
     * Punkt wejsciowy programu do testowania RMI wiadomosci
     */
    
    private static MessagesServer MesSerw;
    private static MessagesController MesCon;
    
    public static void main(String[] args) throws RemoteException {
        
        try {
            RozproszonyConfiguration config = new RozproszonyConfiguration();
            config.printConfiguration();
           MesSerw = (MessagesServer) Naming.lookup(config.getRmiMessagesServiceAddress());
           MesCon =  MesCon.getInstance(MesSerw, new User(1, "", "", "", 5));
        } catch (NotBoundException ex) {
          
        } catch (MalformedURLException ex) {
          
        }

        List<Message> lvWiad = MesCon.getAllMessages(1);
        
        System.out.println("Ile wiadomosci: " + lvWiad.size());
        for(Message lvM : lvWiad)
        {
            System.out.println("tresc wiadomosci: " + lvM.getContent());
        }
        
        //Test dodawania wiadomosci
        MesCon.insertMessage(new Message(2, "Wiadomość wyslana z serwera", "Wiadomość zostala wyslana z serwera", 3, 1, 2));
        
        lvWiad = MesCon.getAllMessages(1);
        
        //Test Pobierania wiadomosci po ID
        System.out.println("Pobranie wiadomosci po ID: " + MesSerw.getMessage(1).getTitle());
        System.out.println("Pobranie wiadomosci po ID2: " + MesCon.getMessage(2).getTitle());
        
        System.out.println("Ile wiadomosci: " + lvWiad.size());
        for(Message lvM : lvWiad)
        {
            System.out.println("tresc wiadomosci: " + lvM.getContent());
        }
        MesCon.insertMessage(new Message(2, "siabadama lambadaba", "wysłana po wszystkim przed checkiem", 3, 1, 2));
        System.out.println("Sprawdzanie stanu wiadomosci coś sie zeminilo?"+MesCon.checkWektor()+" wiadomosci: ");
        lvWiad = MesCon.getLastMessages(3);
        for(Message lvM : lvWiad)
        {
            System.out.println("tresc wiadomosci: " + lvM.getContent());
        }
    }
}

